package com.ycyoes.test.image.test;

import javax.imageio.ImageIO;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class WatermarkRemover {

    public static void main(String[] args) {
        try {
            // 读取原始图像
            BufferedImage originalImage = ImageIO.read(new File("E:\\pictures\\test\\before.png"));

            // 创建一个新的 BufferedImage 来存储去除水印后的图像
            BufferedImage watermarkRemovedImage = new BufferedImage(
                    originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_RGB);

            // 创建一个 Graphics2D 对象，并将原始图像绘制到新图像上
            Graphics2D g2d = watermarkRemovedImage.createGraphics();
            g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2d.drawImage(originalImage, 0, 0, null);

            // 在这里实现去除水印的算法
            // 这里仅作为示例，你需要根据实际情况选择合适的算法和参数
            // 下面的示例仅是将图像的底部一部分覆盖为白色来模拟去除水印效果
            int watermarkHeight = (int) (originalImage.getHeight() * 0.5); // 假设水印在底部 50%
            g2d.setColor(java.awt.Color.WHITE);
            g2d.fillRect(0, originalImage.getHeight() - watermarkHeight, originalImage.getWidth(), watermarkHeight);

            // 保存去除水印后的图像
            ImageIO.write(watermarkRemovedImage, "jpg", new File("E:\\pictures\\test\\output.png"));

            // 释放资源
            g2d.dispose();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

